const pointer = {
   a:1,
   b:3
}
function testBind(params){
    console.log(this, 'this指向',params)
}
Function.prototype.myBind = function(ctx){
    const params = [...arguments]
    params.shift()
    const that = this    
    const pointer =  ctx ? Object(ctx):window
    pointer.__proto__.fn = that
    return function(){
        const params2 = [...arguments]
        const params3 = [...params,...params2]
        const res = pointer.fn(params3)
        delete pointer.__proto__.fn
        return res
    }
}
const bindFun = testBind.myBind(pointer,456,789)
bindFun(123) 